<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 7.0/HTML Export Filter">
<LINK REL="STYLESHEET" HREF="KDM_1.0_front_matter.css" CHARSET="ISO-8859-1" TYPE="text/css">
<TITLE> 1	Scope</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">
<DIV>
<H6 CLASS="Heading">
<A NAME="pgfId-34605"></A><A NAME="marker-58807"></A>Scope</H6>
<P CLASS="Body">
<A NAME="pgfId-64202"></A>This specification defines a meta-model for representing existing software assets, their associations and operational environments, referred to as the Knowledge Discovery Meta-model (KDM). This is the first in the series of specifications related to Software Assurance (SwA) and Architecture-Driven Modernization (ADM) activities. KDM facilitates projects which involve existing software systems by insuring interoperability and exchange of data between tools provided by different vendors.</P>
<P CLASS="Body">
<A NAME="pgfId-64203"></A>One common characteristic of various tools that address SwA and ADM challenge is that they analyze existing software assets (for example, source code modules, database descriptions, build scripts, etc.) to obtain explicit knowledge. Each tool produces a portion of the knowledge about existing software assets. Such tool-specific knowledge may be implicit (&quot;hard-coded&quot; in the tool), restricted to a particular source language and/or particular transformation and/or operational environment. All the above may hinder interoperability between different tools. The meta-model for Knowledge Discovery provides a common repository structure that facilitates the exchange of data contained within individual tool models that represent existing software assets. The meta-model represents the physical and logical assets at various levels of abstraction. The primary purpose of this meta-model is to provide a common interchange format that will allow interoperability between existing modernization and software assurance tools, services and their respective intermediate representations.</P>
</DIV>
<DIV>
<H6 CLASS="Heading">
<A NAME="pgfId-28548"></A><A NAME="marker-58808"></A>Conformance</H6>
<P CLASS="Body">
<A NAME="pgfId-64215"></A>KDM is a meta-model with a very broad scope that covers a large and diverse set of applications, platforms and programming languages. Not all of its capabilities are equally applicable to all platforms, applications or programming languages. The primary goal of KDM is provide the capability to exchange models between tools and thus facilitate cooperation between tool suppliers by allowing integration information about a complex enterprise application from multiple sources, as the complexity of modern enterprise applications involves multiple platform technologies and programming languages. In order to achieve interoperability and especially the integration of information about different facets of an enterprise application from multiple analysis tools, this specification defines several of compliance levels thereby increasing the likelihood that two or more compliant tools will support the same or compatible meta-model subsets. This suggests that the meta-model should be structured modularly, following the principle of separation of concerns, with the ability to select only those parts of the meta-model that are of direct interest to a particular tool vendor.. Consequently, the definition of compliance for KDM requires a balance to be drawn between modularity and ease of interchange. Separation of concerns in the design of KDM is embodied in the concept of KDM domains.</P>
</DIV>
<DIV>
<H2 CLASS="Heading1">
<A NAME="pgfId-64217"></A>KDM Domains</H2>
<P CLASS="Body">
<A NAME="pgfId-64218"></A>Separate facts of knowledge discovery in enterprise application in KDM are grouped into several KDM domains (refer to <A HREF="KDM_1.0_front_matter.htm#51860" CLASS="XRef">See - Domains and levels of KDM compliance.</A>). Each KDM domain consists of a single KDM package which defines meta-model elements to represent particular aspects of the system under study. KDM domains correspond to the well-known concept of architecture views. For example, the Structure domain enables users to discover architectural elements of source code from the system under study, while the Business Rules domain provides users with behavioral elements of the same system such as features or process rules. </P>
<P CLASS="Body">
<A NAME="pgfId-64219"></A>The following domains of knowledge have been identified as the foundation for defining compliance in KDM: Build, Structure, Data, Business Rules, UI, Event, Platform and micro KDM</P>
<P CLASS="Body">
<A NAME="pgfId-64221"></A>From the user's perspective, this partitioning of KDM means that they need only to be concerned with those parts of the KDM that they consider necessary for their activities. If those needs change over time, further KDM domains can be added to the user's repertoire as required. Hence, a KDM user does not have to know the full meta-model to use it effectively. In addition, most KDM domains are partitioned into multiple increments, each adding more knowledge capabilities to the previous ones. This fine-grained decomposition of KDM serves to make the KDM easier to learn and use, but the individual segments within this structure do not represent separate compliance points. The latter strategy would lead to an excess of compliance points and result to the interoperability problems described above. Nevertheless, the groupings provided by KDM domains and their increments do serve to simplify the definition of KDM compliance as explained below.</P>
<P CLASS="Body">
<A NAME="pgfId-64222"></A>&nbsp;</P>
<DIV>
<IMG SRC="KDM_1.0_front_matter-1.gif">
</DIV>
<DIV>
<H6 CLASS="FigureCaption1">
<A NAME="pgfId-64301"></A><A NAME="51860"></A>- Domains and levels of KDM compliance</H6>
</DIV>
</DIV>
<DIV>
<H2 CLASS="Heading1">
<A NAME="pgfId-64307"></A>Compliance Levels</H2>
<P CLASS="Body">
<A NAME="pgfId-64308"></A>In addition, the total set of KDM packages is further partitioned into layers of increasing capability called compliance levels. There are two KDM compliance levels:</P>
<UL>
<LI CLASS="Bullet1">
<A NAME="pgfId-64310"></A>Level 0 (L0) - This compliance level contains the following KDM packages: Core, kdm, Source, Code and Action packages. It provides an entry-level of knowledge discovery capability. More importantly, it represents a common denominator that can serve as a basis for interoperability between different categories of KDM tools. <BR>
<BR>
To be L0 compliant, a tool must completely support all model elements within all packages for L0 level.</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-64312"></A>Level 1 (L1) - This level addresses KDM domains and extends the capabilities provided by Level 0. Specifically, it adds the following packages: Build, Structure, Data, Conceptual, UI, Event, Platform, as well as the set of constraints for the micro KDM domain defined in section 14 Micro KDM, and Appendix 1 &quot;Semantics of the micro KDM action elements&quot;. These packages are grouped to form above-mentioned domains. More importantly, this level represents a layer where tools could be complimentary since their focus would be in different areas of concern. This would be additional reason why L0 interoperability (which at this level would be viewed as information sharing between tools) is mandated. In this case interoperability at this level would be viewed as correlation between tools to complete knowledge puzzle that end user might need to perform particular task.<BR>
<BR>
To be L1 compliant for a given KDM domain, a tool must completely support all model elements defined by the package for that domain and satisfy all semantic constraints specified for that domain.</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-64314"></A>Level 2 (L2) - This level is the union of L1 levels for all KDM domains.</LI>
</UL>
<P CLASS="Body">
<A NAME="pgfId-64317"></A>&nbsp;</P>
<DIV>
<H3 CLASS="Heading2">
<A NAME="pgfId-64323"></A>Meaning and Types of Compliance</H3>
<P CLASS="Body">
<A NAME="pgfId-64324"></A>Compliance to Level 1 (L1) for a certain KDM domain entails full realization of all KDM packages for the corresponding KDM Domain. This also implies full realization of all KDM packages in all the levels below that level (in this case Level 0 (L0)). It is not meaningful to claim compliance to Level 1 without also being compliant with the Level 0. A tool that is compliant at a Level 1 must be able (at least) to import models from tools that are compliant to Level 0 without loss of information. So, &quot;full realization&quot; for a KDM domain means supporting the complete set of concepts defined for that KDM domain at L1 and complete set of concepts defined at L0.</P>
<P CLASS="Body">
<A NAME="pgfId-64325"></A>For a given compliance level, a KDM implementation can provide:</P>
<UL>
<LI CLASS="Bullet1">
<A NAME="pgfId-64326"></A>the capability to analyze physical artifacts of existing applications and export their representations based on the XMI schema corresponding to the given compliance level.</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-64327"></A>the capability to import representations of existing software systems based on the XMI schema corresponding to the given compliance level and perform operations suggested by the corresponding packages.</LI>
</UL>
<P CLASS="Body">
<A NAME="pgfId-64601"></A>&nbsp;</P>
<TABLE BORDER="1">
<CAPTION>
<H6 CLASS="TableCaption">
<A NAME="pgfId-64711"></A>- Compliance Statements</H6>
</CAPTION>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId-64683"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="4">
<P CLASS="Mapping-Table-Title">
<A NAME="pgfId-64703"></A>Compliance Statement</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="2">
<P CLASS="TableHead">
<A NAME="pgfId-64695"></A>Compliance Level</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableHead">
<A NAME="pgfId-64697"></A>Import-Analysis</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableHead">
<A NAME="pgfId-64699"></A>Import API</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableHead">
<A NAME="pgfId-64701"></A>Export</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="2">
<P CLASS="TableText">
<A NAME="pgfId-65160"></A>L0</P>
<P CLASS="Body">
<A NAME="pgfId-64661"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64665"></A>Import KDM models based on complete KDM XMI schema into existing tool;</P>
<P CLASS="TableText">
<A NAME="pgfId-64666"></A>support specified mapping between KDM and existing model in the tool;</P>
<P CLASS="TableText">
<A NAME="pgfId-64667"></A>extend operations of existing tool to support meta-model elements of KDM framework;</P>
<P CLASS="TableText">
<A NAME="pgfId-64668"></A>extend operations of existing tool to support meta-model elements of Code and Action packages;</P>
<P CLASS="TableText">
<A NAME="pgfId-64669"></A>extend operations of existing tool to traceability to the physical artifacts of the application from Source package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64671"></A>Import KDM models based on complete KDM XMI schema;</P>
<P CLASS="TableText">
<A NAME="pgfId-64672"></A>support KDM API defined by the KDM Core package;</P>
<P CLASS="TableText">
<A NAME="pgfId-64673"></A>support KDM framework as defined in the Kdm package;</P>
<P CLASS="TableText">
<A NAME="pgfId-64674"></A>support KDM API defined by the Code and Action packages;</P>
<P CLASS="TableText">
<A NAME="pgfId-64675"></A>support traceability to the physical artifacts of the application as defined in the Source package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64677"></A>Provide capability to analyze artifacts of an application for specified programming language or multiple languages;</P>
<P CLASS="TableText">
<A NAME="pgfId-64678"></A>Generate XMI documents corresponding to the KDM XMI schema;</P>
<P CLASS="TableText">
<A NAME="pgfId-64679"></A>Support KDM framework as defined by the Kdm package;</P>
<P CLASS="TableText">
<A NAME="pgfId-64680"></A>Support Code and Action packages;</P>
<P CLASS="TableText">
<A NAME="pgfId-64681"></A>Provide traceability back to the physical artifacts as defined by the Source package.</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64650"></A>L1</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64652"></A>STRUCTURE</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64654"></A>L0 compliance for analysis;extend operations of existing tool to support meta-model elements of the Structure package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64656"></A>L0 compliance for import;Support KDM API as defined by the Structure package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64658"></A>L0 compliance for export;Provide capability to analyze architecture components of existing application and generate KDM Structure model according to Structure package.</P>
<P CLASS="TableText">
<A NAME="pgfId-64659"></A>&nbsp;</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64515"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64517"></A>DATA</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64519"></A>L0 compliance for analysis;</P>
<P CLASS="TableText">
<A NAME="pgfId-64520"></A>extend operations of existing tool to support  meta-model elements of the Data package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64522"></A>L0 compliance for import;</P>
<P CLASS="TableText">
<A NAME="pgfId-64523"></A>Support KDM API as defined by the Data package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64525"></A>L0 compliance for export;</P>
<P CLASS="TableText">
<A NAME="pgfId-64526"></A>Provide capability to analyze persistent data components of existing application for specified database system and generate KDM Data model according to Data package.</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64528"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64530"></A>PLATFORM</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64532"></A>L0 compliance for analysis;</P>
<P CLASS="TableText">
<A NAME="pgfId-64533"></A>extend operations of existing tool to support meta-model elements of the Platform  package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64535"></A>L0 compliance for import;</P>
<P CLASS="TableText">
<A NAME="pgfId-64536"></A>Support KDM API as defined by the Platform and Runtime packages.</P>
<P CLASS="TableText">
<A NAME="pgfId-64537"></A>&nbsp;</P>
<P CLASS="TableText">
<A NAME="pgfId-64538"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64540"></A>L0 compliance for export;</P>
<P CLASS="TableText">
<A NAME="pgfId-64541"></A>Provide capability to analyze platform artifacts for specified platform and generate KDM Platform model according to Platform package.</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64544"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64546"></A>BUILD</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64548"></A>L0 compliance for analysis;</P>
<P CLASS="TableText">
<A NAME="pgfId-64549"></A>extend operations of existing tool to support meta-model elements of the Build package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64551"></A>L0 compliance for import;</P>
<P CLASS="TableText">
<A NAME="pgfId-64552"></A>Support KDM API as defined by the Build package.</P>
<P CLASS="TableText">
<A NAME="pgfId-64553"></A>&nbsp;</P>
<P CLASS="TableText">
<A NAME="pgfId-64554"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64556"></A>L0 compliance for export;</P>
<P CLASS="TableText">
<A NAME="pgfId-64557"></A>Provide capability to analyze build artifacts for specified build environment and generate KDM Build model according to Build package.</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64559"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64561"></A>UI</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64563"></A>L0 compliance for analysis;</P>
<P CLASS="TableText">
<A NAME="pgfId-64564"></A>extend operations of existing tool to support  meta-model elements of the UI package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64566"></A>L0 compliance for import;</P>
<P CLASS="TableText">
<A NAME="pgfId-64567"></A>Support KDM API as defined by the UI package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64569"></A>L0 compliance for export;</P>
<P CLASS="TableText">
<A NAME="pgfId-64570"></A>Provide capability to analyze user interface artifacts for specified user interface system and generate KDM UI model according to UI package;</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-65876"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-65878"></A>EVENT</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-65886"></A>L0 compliance for analysis;</P>
<P CLASS="TableText">
<A NAME="pgfId-65887"></A>extend operations of existing tool to support  meta-model elements of the Event package.</P>
<P CLASS="TableText">
<A NAME="pgfId-65880"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-65895"></A>L0 compliance for import;</P>
<P CLASS="TableText">
<A NAME="pgfId-65882"></A>Support KDM API as defined by the  Event package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-65904"></A>L0 compliance for export;</P>
<P CLASS="TableText">
<A NAME="pgfId-65905"></A>Provide capability to analyze  artifacts related to event-driven runtime frameworks and state-trasition behavior and </P>
<P CLASS="TableText">
<A NAME="pgfId-65906"></A>generate KDM Event model according to Event package.</P>
<P CLASS="TableText">
<A NAME="pgfId-65884"></A>&nbsp;</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64573"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64575"></A>BUSINESS</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64577"></A>L0 compliance for analysis;</P>
<P CLASS="TableText">
<A NAME="pgfId-64578"></A>extend operations of existing tool to support meta-model elements of the Conceptual package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64580"></A>L0 compliance for import;</P>
<P CLASS="TableText">
<A NAME="pgfId-64581"></A>Support KDM API as defined by the Conceptual package.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64583"></A>L0 compliance for export;</P>
<P CLASS="TableText">
<A NAME="pgfId-64584"></A>Provide capability to analyze conceptual and behavior artifacts (e.g., domain concepts, business rules, scenarios) of existing application and generate KDM Conceptual model according to Conceptual package;</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-65934"></A>&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-65936"></A>MICRO KDM</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-65938"></A>L0 compliance for analysis; extend operations of existing tool to support micro KDM actions as specified in section 14 micro KDM and Appendix 1</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-65940"></A>L0 compliance for import; Support micro KDM actions as specified in section 14 micro KDM and Appendix 1 </P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-65942"></A>L0 compliance for export; Provide capability to analyze artifacts of existing application  to the level of detail specified in section 14 and Appendix 1 provide the mapping of semantics of the existing application as it is determined by the programming languages and the runtime platform into KDM micro actions and generate KDM  models that represent the same meaning</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="2">
<P CLASS="TableText">
<A NAME="pgfId-64587"></A>L2</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64591"></A>L0 import compliance for analysis;</P>
<P CLASS="TableText">
<A NAME="pgfId-64592"></A>L1 import-analysis compliance for all KDM domains.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64594"></A>L0 compliance for import;</P>
<P CLASS="TableText">
<A NAME="pgfId-64595"></A>Support KDM API as defined by all KDM packages.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableText">
<A NAME="pgfId-64599"></A>L0 export compliance;</P>
<P CLASS="TableText">
<A NAME="pgfId-64600"></A>L1 export compliance for all KDM domains.</P>
</TD>
</TR>
</TABLE>
<DIV>
<H6 CLASS="Heading">
<A NAME="pgfId-60263"></A><A NAME="marker-58809"></A>Normative <A NAME="marker-58810"></A>References</H6>
<P CLASS="Body">
<A NAME="pgfId-64739"></A>The following normative documents contain provisions, which, through reference in this text, constitute provisions of this specification. For dated references, subsequent amendments to, or revisions of any of these publications do not apply. </P>
<UL>
<LI CLASS="Bullet1">
<A NAME="pgfId-64740"></A>UML 2. Infrastructure Specification</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-64741"></A>MOF 2.0 Specification</LI>
</UL>
</DIV>
<DIV>
<H6 CLASS="Heading">
<A NAME="pgfId-65185"></A><A NAME="marker-65183"></A>Terms and <A NAME="marker-65184"></A>Definitions</H6>
<P CLASS="Body">
<A NAME="pgfId-65192"></A>There are no special terms or definitions in this specification.</P>
</DIV>
<DIV>
<H6 CLASS="Heading">
<A NAME="pgfId-65188"></A><A NAME="marker-65187"></A>Symbols</H6>
<P CLASS="Body">
<A NAME="pgfId-65170"></A>There are no symbols defined in this specification.</P>
</DIV>
<DIV>
<H6 CLASS="Heading">
<A NAME="pgfId-63890"></A><A NAME="marker-60393"></A>Additional Information</H6>
</DIV>
</DIV>
</DIV>
<DIV>
<H2 CLASS="Heading1">
<A NAME="pgfId-62508"></A>Changes to Other OMG Specifications</H2>
<P CLASS="Body">
<A NAME="pgfId-65207"></A>There are no changes to other OMG specifications.</P>
</DIV>
<DIV>
<H2 CLASS="Heading1">
<A NAME="pgfId-64151"></A>How to Read this Specification</H2>
<P CLASS="Body">
<A NAME="pgfId-65220"></A>The rest of this document contains the technical content of this specification. </P>
<P CLASS="Body">
<A NAME="pgfId-65222"></A>Chapter 7. Specification overview</P>
<P CLASS="Body">
<A NAME="pgfId-65223"></A>	Provides design rationale for the KDM specification</P>
<P CLASS="Body">
<A NAME="pgfId-65224"></A>Chapter 8. KDM </P>
<P CLASS="Body">
<A NAME="pgfId-65225"></A>	Gives the overview of the packages of KDM</P>
<P CLASS="Body">
<A NAME="pgfId-65963"></A>Part 1. The KDM Infrastructure Layer</P>
<P CLASS="Body">
<A NAME="pgfId-65226"></A>Chapter 9. Core package</P>
<P CLASS="Body">
<A NAME="pgfId-65227"></A>	Describes foundation constructs for creating and describing meta-model classes in other KDM packages. Classes and associations of the Core package determine the structure of KDM models, provide meta-modeling services to other classes and define fundamental constraints.</P>
<P CLASS="Body">
<A NAME="pgfId-65228"></A>Chapter 10. kdm package</P>
<P CLASS="Body">
<A NAME="pgfId-65229"></A>	Describes the key infrastructure elements that determine patterns for constructing KDM models and integrating them. This package defines several static elements that are shared by all KDM models. This package determines the queries against KDM models.</P>
<P CLASS="Body">
<A NAME="pgfId-65230"></A>Chapter 11. Source package</P>
<P CLASS="Body">
<A NAME="pgfId-65231"></A>	This package describes meta-model elements for specifying the linkage between the KDM model artifacts and their physical implementations in the artifacts of existing software. Elements of the Source package allow viewing the source code, corresponding to KDM model elements.</P>
<P CLASS="Body">
<A NAME="pgfId-65964"></A>Part 2. The Program Elements Layer</P>
<P CLASS="Body">
<A NAME="pgfId-65232"></A>Chapter 12. Code package</P>
<P CLASS="Body">
<A NAME="pgfId-65233"></A>	Describes meta-model elements that capture programming artifacts as provided by programming languages, such as data types, procedures, macros, prototypes, templates, etc. </P>
<P CLASS="Body">
<A NAME="pgfId-65234"></A>Chapter 13. Action package</P>
<P CLASS="Body">
<A NAME="pgfId-65235"></A>	Describes the meta-model elements related to the behavior of applications. Action package defines detailed endpoints for most KDM relations. The key element related to behavior is a KDM action. Other packages depend on the Action package to use actions in further modeling aspects of existing applications such as features, scenarios, business rules, etc.</P>
<P CLASS="Body">
<A NAME="pgfId-65961"></A>Chapter 14. Micro KDM</P>
<P CLASS="Body">
<A NAME="pgfId-65962"></A>	Describes the guidelines and constraints for semantically precise KDM representations.</P>
<P CLASS="Body">
<A NAME="pgfId-65971"></A>Part 3. The Runtime Resources Layer</P>
<P CLASS="Body">
<A NAME="pgfId-65979"></A>Chapter 15. Platform package</P>
<P CLASS="Body">
<A NAME="pgfId-65980"></A>	Describes the meta-model elements for representing operating environments of existing software systems. Application code is not self-contained, as it depends not only on the selected programming language, but also on the selected Runtime platform. Platform elements determine the execution context for the application. Platform package provides meta-model elements to address the following:</P>
<UL>
<LI CLASS="Bullet2">
<A NAME="pgfId-65981"></A>Resources that Runtime platforms provide to components</LI>
<LI CLASS="Bullet2">
<A NAME="pgfId-65982"></A>Services that are provided by the platform to manage the life-cycle of each resource</LI>
<LI CLASS="Bullet2">
<A NAME="pgfId-65983"></A>Control-flow between components as it is determined by the platform</LI>
<LI CLASS="Bullet2">
<A NAME="pgfId-65984"></A>Error handling across application components</LI>
<LI CLASS="Bullet2">
<A NAME="pgfId-65985"></A>Integration of application components</LI>
</UL>
<P CLASS="Body">
<A NAME="pgfId-65986"></A>	The Platform package focuses on the logical aspects of the operating environments of existing applications, while the Runtime package further addresses the physical aspects of operating environments, such as deployment.</P>
<P CLASS="Body">
<A NAME="pgfId-65995"></A>Chapter 16. UI package</P>
<P CLASS="Body">
<A NAME="pgfId-65996"></A>	Describes the meta-model elements to represent knowledge related to user interfaces, including their logical composition, sequence of operations, etc.</P>
<P CLASS="Body">
<A NAME="pgfId-66002"></A>Chapter 17. Event package</P>
<P CLASS="Body">
<A NAME="pgfId-66003"></A>	Describes meta-model elements that represent basic elements related to behavior of applications in terms of events, messages and responses.</P>
<P CLASS="Body">
<A NAME="pgfId-66009"></A>Chapter 18. Data package</P>
<P CLASS="Body">
<A NAME="pgfId-66010"></A>	Describes the Data domain of KDM, aiming primarily at databases and other ways of organizing persistent data in enterprise applications independent of a particular technology, vendor and platform.</P>
<P CLASS="Body">
<A NAME="pgfId-65977"></A>Part 4. Abstractions Layer</P>
<P CLASS="Body">
<A NAME="pgfId-66020"></A>Chapter 19. Structure package</P>
<P CLASS="Body">
<A NAME="pgfId-66021"></A>	Describes the meta-model elements for representing the logical organization of the software system in terms of logical subsystems, architectural layers, components and packages.</P>
<P CLASS="Body">
<A NAME="pgfId-66029"></A>Chapter 20. Conceptual package</P>
<P CLASS="Body">
<A NAME="pgfId-66030"></A>	Describes the meta-model elements for representing business domain knowledge about existing applications in the context of other KDM views.</P>
<P CLASS="Body">
<A NAME="pgfId-66018"></A>Chapter 21. Build package</P>
<P CLASS="Body">
<A NAME="pgfId-65237"></A>	Describes the meta-model elements for representing the artifacts involved in building the software system (the engineering view of the software system).</P>
<P CLASS="Body">
<A NAME="pgfId-66035"></A>&nbsp;</P>
<P CLASS="Body">
<A NAME="pgfId-66036"></A>&nbsp;</P>
<P CLASS="Body">
<A NAME="pgfId-66037"></A>&nbsp;</P>
</DIV>
<DIV>
<H2 CLASS="Heading1">
<A NAME="pgfId-63914"></A><A NAME="marker-63913"></A>Acknowledgements</H2>
<P CLASS="Body">
<A NAME="pgfId-65495"></A>The following companies submitted and/or supported parts of this specification:</P>
<UL>
<LI CLASS="Bullet1">
<A NAME="pgfId-65530"></A>Allen Systems Group, Inc</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-65536"></A>BluePhoenix</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-65542"></A>EDS</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-65548"></A>Flashline</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-65554"></A>IBM</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-65496"></A>Klocwork, Inc. </LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-65497"></A>KDM Analytics</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-65504"></A>SoftwareRevolution</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-65524"></A>Tactical Strategy Group, Inc</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-65955"></A>Unisys</LI>
</UL>
<P CLASS="Body">
<A NAME="pgfId-65956"></A>The following persons were members of the core team that designed and wrote this specification: Nikolai Mansourov, Michael Smith, Djenana Campara, Larry Hines, William Ulrich, Howard Hess, Henric Gomez, Chris Caputo, Vitaly Khusidman, Barbara Errickson-Connor.</P>
<P CLASS="Body">
<A NAME="pgfId-65507"></A>In addition, the following persons contributed valuable ideas and feedback that significantly improved the content and the quality of this specification: Pete Rivett, Adam Neal, Sumeet Malhotra, Jim Rhyne, Mark Dutra, Sara Porat, Fred Cummins, Manfred Koethe, Alena Laskavaia, Alain Picard.</P>
<P CLASS="Body">
<A NAME="pgfId-63916"></A>&nbsp;</P>
<P CLASS="Body">
<A NAME="pgfId-65489"></A>&nbsp;</P>
<P CLASS="Body">
<A NAME="pgfId-65490"></A>&nbsp;</P>
<P CLASS="Body">
<A NAME="pgfId-65491"></A>&nbsp;</P>
<P CLASS="Body">
<A NAME="pgfId-65492"></A>&nbsp;</P>
<P CLASS="Body">
<A NAME="pgfId-63261"></A>&nbsp;</P>
<P CLASS="Body">
<A NAME="pgfId-63167"></A>&nbsp;</P>
</DIV>
</BODY>
</HTML>
